﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Caixa.BLL;

namespace Caixa
{
	public partial class Frm_Saque : Caixa.Frm_Base
	{
		#region " Constructor "

		public Frm_Saque()
		{
			InitializeComponent();
		}

		#endregion

		#region " Events "

		private void Frm_Saque_Load(object sender, EventArgs e)
		{
			if (!CaixaEletronicoBLL.IsLogado)
				this.Close();

			tecladoVirtual.TeclaAcionada += new Caixa.Controls.TecladoVirtual.TeclaAcionadaEventHandler(tecladoVirtual_TeclaAcionada);
		}

		private void btnVoltar_Click(object sender, EventArgs e)
		{
			this.Close();
		}

		protected void tecladoVirtual_TeclaAcionada(Caixa.Controls.TecladoVirtual.Tecla tecla)
		{
			switch (tecla)
			{
				case Caixa.Controls.TecladoVirtual.Tecla.Num0:
				case Caixa.Controls.TecladoVirtual.Tecla.Num1:
				case Caixa.Controls.TecladoVirtual.Tecla.Num2:
				case Caixa.Controls.TecladoVirtual.Tecla.Num3:
				case Caixa.Controls.TecladoVirtual.Tecla.Num4:
				case Caixa.Controls.TecladoVirtual.Tecla.Num5:
				case Caixa.Controls.TecladoVirtual.Tecla.Num6:
				case Caixa.Controls.TecladoVirtual.Tecla.Num7:
				case Caixa.Controls.TecladoVirtual.Tecla.Num8:
				case Caixa.Controls.TecladoVirtual.Tecla.Num9:

					txtValor.Text = txtValor.Text.Replace("R$", "").Replace(".", "").Replace(" ", "");

					int inteiro;
					int.TryParse(txtValor.Text.Substring(0, txtValor.Text.IndexOf(",")), out inteiro);

					double dec;
					double.TryParse(string.Format("0,{0}", txtValor.Text.Substring(txtValor.Text.IndexOf(",") + 1, txtValor.Text.Length - txtValor.Text.IndexOf(",") - 1)), out dec);

					if (inteiro <= 0)
					{
						if (dec <= 0)
							dec = (Convert.ToInt32(tecla) * 0.01) + dec;
						else if (dec <= 0.1)
							dec = (dec * 10) + (Convert.ToInt32(tecla) * 0.01);
						else
							int.TryParse(string.Format("{0}", Convert.ToInt32(tecla)), out inteiro);
					}
					else
					{
						int.TryParse(string.Format("{0}{1}", Convert.ToInt32(tecla), inteiro), out inteiro);
					}

					txtValor.Text = string.Format("R$ {0:n2}", inteiro + dec);

					break;
				case Caixa.Controls.TecladoVirtual.Tecla.Corrige:
					
					txtValor.Text = txtValor.Text.Replace("R$", "").Replace(".", "").Replace(" ", "");

					if (txtValor.Text.Length > 0)
						txtValor.Text = txtValor.Text.Substring(1, txtValor.Text.Length - 1);
					txtValor.Text = string.Format("R$ {0:n2}", txtValor.Text.Replace("R$", "").Trim());
					
					break;
				case Caixa.Controls.TecladoVirtual.Tecla.Confirma:
					this.Close();

					bool success = false;

					using (Frm_Processando frm_Processando = new Frm_Processando())
					{
						frm_Processando.Show();
						frm_Processando.Refresh();
						System.Threading.Thread.Sleep(500);

						// Chama o processamento de efetuar o saque
						success = EfetuarSaque();

						frm_Processando.Close();
					}

					if (success)
					{
						using (Frm_SaqueRetireDinheiro frm_SaqueRetireDinheiro = new Frm_SaqueRetireDinheiro())
						{
							frm_SaqueRetireDinheiro.ShowDialog();
						}
					}

					break;
				default:
					break;
			}
		}

		private void btnCancelar_Click(object sender, EventArgs e)
		{
			this.Close();
		}

		#endregion

		#region " Methods "

		private bool EfetuarSaque()
		{
			bool success = false;

			try
			{
				double valor;
				double.TryParse(string.Format("{0}", txtValor.Text.Replace("R$", "").Replace(" ", "")), out valor);

				success = CaixaEletronicoBLL.Saque(CaixaEletronicoBLL.CaixaEletronicoContext, CaixaEletronicoBLL.ContaLogada, valor);
			}
			catch (Exception e)
			{
				MessageBox.Show(e.Message, "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Warning);
			}

			return success;
		}

		#endregion
	}
}
